Method and apparatus for maintaining peripheral device support information

ABSTRACT

A method and apparatus for maintaining a computing device is provided. An indication of an end of persistence for a peripheral device is received. Monitoring is performed for an event related to the end of persistence. Support information associated with the peripheral device is removed from the computing device based on detection of the event related to the end of persistence.

FIELD OF THE INVENTION

The present invention relates to maintaining relationships between acomputing device and a peripheral device and, more particularly, to amethod and apparatus for automatically removing support information froma computing device.

BACKGROUND OF THE INVENTION

Conventionally, before a computing device can use a peripheral device,some setting up must take place at the computing device. This setupprocess is referred to hereinafter as installation of the peripheraldevice. For example, the computing device might need to know someinformation about the peripheral device being installed and/or thecomputing device might need to know some information regarding, forexample, how to activate the peripheral device, and how to configure andcontrol information sent to or received from the peripheral device(referred to hereinafter collectively as “support information”).Oftentimes, at least some of this support information is provided to thecomputing device in the form of configuration files and/or an installedset of executable instructions known as a device driver (e.g., a printerdriver). The device driver can then be utilized with, for example, aprocessor and operating system of the computing device to activate anduse the peripheral device. Accordingly, different device drivers aretypically made available for different combinations of peripheraldevices, operating systems, and/or processors.

In some cases, it is undesirable to continually maintain such supportinformation on a computing device. For example, when the relationshipbetween a computing device and a peripheral device is transient innature (e.g., the user is merely visiting the location in which theperipheral device is located), the user of the computing device and/orthe administrator responsible for the peripheral device might not wantsuch support information to be maintained on the computing device. Auser of a computing device might also want to avoid keeping such supportinformation in an effort to help keep the number of peripheral devicesassociated with the computing device manageable and/or to remove invalidperipheral devices from the computing device.

SUMMARY OF THE INVENTION

In one embodiment, the present invention relates to a method formaintaining a computing device. An indication of an end of persistencefor a peripheral device is received. Monitoring is performed for anevent related to the end of persistence. Support information associatedwith the peripheral device is removed from the computing device based ondetection of the event related to the end of persistence.

In another embodiment, the present invention relates to a computingdevice having memory and a provider set of executable instructions. Theprovider set of executable instructions are operable to receive anindication of an end of persistence for a peripheral device capable ofbeing operably connected to the computing device, to monitor for anevent related to the end of persistence, and to remove supportinformation associated with the peripheral device from the memory basedon detection of the event related to the end of persistence.

Still a further embodiment of the present invention relates to a systemincluding a peripheral device and a computing device. The computingdevice has memory and is capable of accessing the peripheral device. Thecomputer device is operable to receive an indication of an end ofpersistence for the peripheral device, to monitor for an event relatedto the end of persistence, and to remove support information associatedwith the peripheral device from the memory based on detection of theevent related to the end of persistence.

These and additional advantages and novel features of the presentinvention will become apparent to those skilled in the art from thefollowing detailed description, which is simply, by way of illustration,various modes contemplated for carrying out the invention. As will berealized, the invention is capable of other different aspects, allwithout departing from the invention. Accordingly, the specification isintended to be illustrative in nature and not restrictive.

BRIEF DESCRIPTION OF THE DRAWINGS

While the specification concludes with claims particularly pointing outand distinctly claiming the present invention, it is believed that thesame will be further understood from the following description taken inconjunction with the accompanying drawings in which:

FIG. 1 is a schematic diagram of a system in which one embodiment of thepresent invention can be utilized;

FIG. 2 is a flow diagram of a method for maintaining peripheral devicesupport information according to an illustrative embodiment of thepresent invention;

FIG. 3 depicts a flow diagram of a method for installing supportinformation according to an illustrative embodiment of the presentinvention;

FIG. 4 depicts an installation interface according to an illustrativeembodiment of the present invention; and

FIG. 5 is sample code illustrating an interface between an HTML file anda supplemental component according to an illustrative embodiment of thepresent invention.

The embodiments set forth in the drawings are illustrative in nature andare not intended to be limiting of the invention defined by the claims.Moreover, individual features of the drawings and the invention will bemore fully apparent and understood in view of the detailed description.

DETAILED DESCRIPTION

One embodiment of the present invention relates to maintainingperipheral device support information associated with a computingdevice. For purposes of illustration only, the exemplary descriptionpresented herein will focus on such an embodiment wherein the computingdevice is a general purpose computer and the peripheral device is aprinter. As can be appreciated, however, the teachings of the presentinvention could be extended to embodiments wherein the computing deviceis something other than a general purpose computer (e.g., a specialpurpose computer, a personal digital assistant, a digital telephone, aphoto printer, a printer, a facsimile apparatus, a storage device, aportable digital audio player, a scanner, a camera, a video recorder, acable box, a satellite receiver, a stereo, a radio, a television, adigital versatile disk (“DVD”) player, a video cassette recorder(“VCR”), and the like) and/or the peripheral device is something otherthan a printer (e.g., a special purpose computer, a personal digitalassistant, a digital telephone, a photo printer, a facsimile apparatus,a storage device, a portable digital audio player, a scanner, a camera,a video recorder, a cable box, a satellite receiver, a stereo, a radio,a television, a digital versatile disk (“DVD”) player, a video cassetterecorder (“VCR”), and the like).

FIG. 1 is a schematic block diagram of a network 10 comprising acollection of interconnected computing devices, in which certainembodiments of the present invention might be utilized. As can beappreciated, aspects of the present invention can also be utilized inembodiments wherein computing devices are not interconnected. Referring,however, to the embodiment illustrated in FIG. 1, computer 12 in network10 might comprise a processor, such as central processing unit (CPU) 20,memory 22 and an input/output (I/O) unit (not shown), which may beinterconnected by a system bus (not shown).

Memory 22 may comprise, for example, storage locations composed ofrandom access memory (RAM) devices that are addressable by CPU 20 andthe I/O unit. An operating system (OS) 24, portions of which could beresident in memory 22 and executed by CPU 20, can be used tofunctionally organize computer 12 by, inter alia, invoking networkoperations in support of application programs (e.g., browser application36) executing on the CPU. It will be apparent to those skilled in theart that other processor and memory means, including various computerreadable media, may be used to, for example, store and executeinstructions pertaining to the inventive method and apparatus describedherein.

The I/O unit can connect computer 12 to a transmission medium 26, andoftentimes, to a mass storage device, such as local data store 30,and/or local printer 28. The I/O unit can receive information, such ascontrol and data signals, from an input device 34 (e.g., a keyboard ormouse) and/or provide that information to CPU 20 for storage/retrievalof information to/from date store 30, for output to printer 28 and/orfor transfer/retrieval over transmission medium 26.

Transmission medium 26 may comprise, for example, a local area network(LAN) or a collection of LANs cooperating to form a larger network, suchas the Internet. Collectively, the LANs may be configured to form atopology of internetworked computing devices that communicate byexchanging data packets according to a predefined set or protocols.Communication among the computing devices may be effected by reliablecommunication over, for example, Transmission Control Protocols/InternetProtocol (TCP/IP) sessions. It should be noted that other conventionaltechniques and protocols, such as Remote Procedure Calls (RPC) or theInternet Packet Exchange (IPX) protocol, may also be used withembodiments of the present invention.

Although aspects of the present invention can be used in a variety ofnetwork architectures, including a peer-to-peer network, in theembodiment illustrated in FIG. 1, network 10 is organized in accordancewith a client-server architecture, wherein computer 12 may comprise apersonal computer or workstation configured as a “client” (computer 12will hereinafter be referred to by example as client 12) for interactionwith users and computing device 18 is configured as a “server”(computing device 18 will hereinafter be referred to by example asserver 18) that performs services directed by the client. For example,server 18 may be configured as a print server having a locally-attachedprinter 19. In another embodiment of the invention, a printer 14 may bedirectly-attached to transmission medium 26.

In one exemplary embodiment of the present invention, for example,server 18 might include components such as printer agent 38 and printmanager 39. When embodied in software, these components could, forexample, generally interact with an operating system on server 18, suchas the NetWare operating system available from Novell, Inc., to providea print server configured to provide print services to client 12 ofnetwork 10. For example, printer agent 38 can be a software componentexecuting on a server representing a local, remote or network-attachedprinter. In another embodiment, a printer agent may be embedded into aprinter, such as printer 14, which can be arranged to attach directly tonetwork 10.

Printer agent 38 manages a physical print device, such as printer 19,for example (or a print function of a multi-function device). Printeragent 38, for example, might embody the printer, print queue, printserver, and spooler functions associated with conventional queue-basedprinting. Printer agent 38 might be a component of a printingarchitecture, such as the Novell Distributed Print Services (NDPS)printing architecture. One potential advantage of using NDPS mightinclude that the components of the NDPS architecture are independent ofany single protocol or operating system and, as such, may be ported todifferent environments based, for example, upon the InternationalStandards Organization 10175 Document Printing Application standard andInternet Engineering Task Force RFC 1759.

According to one exemplary embodiment, printer agent 38 may beimplemented as part of print manager 39, such as the NDPS managercomponent of the NDPS architecture. A NDPS manager can manage a printeragent, such as to enable creation of the printer agent and to enablesuch an agent to share resources. For example, a NDPS manager can manageand support one or more printer agents running at a node by providingcommon support and access for naming, protocol, file, object database,and other network services. A NDPS manager can be a NetWare LoadableModule (NLM) that runs on a NetWare print server. An agent 38 mayfurther be embodied as a software application configured to run in otherenvironments, such as one including an OS such as the Windows 9x, 2000,ME, XP, or NT, or DOS, Unix, Linux or Apple OSs, or embedded directlyinto a printer or print server apparatus.

Other components (not shown) of the NDPS architecture might include, forexample, a printer device subsystem (PDS), a port handler (PH) and aprinter gateway, the latter comprising a software bridge that directlylinks a printer agent to a corresponding printer. For example, a PDS canbe an NLM that resides in memory on a print server and retrievesprinter-specific information from local storage on the server. A PDSmight be used to create a printer agent for a printer which is notdirectly attached to a network and for a printer that is directlyattached to the network, but that does not include an NDPS gateway, forexample. A PH might be used to ensure that the PDS can communicate witha printer regardless of the type of physical port or interface beingused.

Printer agent 38 can also be an NLM that contains information about aprinter it represents. Such information might include a printer'snetwork address, name, status or other characteristics, and can becommunicated to client 12 and managed by a system administrator. Printeragent 38 can support central management of printers on network 10, aswell as the creation and management of print jobs. In one view, printeragent could thus be seen as a liaison between a client and a printer, sothat each print request goes from the client to the printer by way ofthe printer agent.

Printer agent 38 might receive requests from and send replies to client12 in compliance with a protocol, such as the IPP protocol. As noted,the NDPS architecture can be protocol-independent and may support otherprotocols, such as the Hypertext Transfer Protocol (HTTP), the LPRprotocol or the RPC Protocol, instead of or in addition to IPP.

Referring to FIG. 2, one exemplary embodiment of the present inventionis related to a method 100 for maintaining peripheral device supportinformation associated with a computing device. According to method 100,at act 120, a computing device might receive an indication of an end ofpersistence for a peripheral device associated with or capable of beingassociated with the computing device. At act 140, the computing devicemight store an indicator of the end of persistence. At act 160, thecomputing device could monitor for an event related to the end ofpersistence. At act 180, the support information associated with theperipheral device is removed.

An exemplary embodiment of one such method will now be described in moredetail with respect to the apparatus illustrated in FIG. 1, whereinclient 12 is a computing device and printers 14, 19 are peripheraldevices. An end of persistence for a printer is identified. In oneembodiment, the end of persistence can be selected from a list ofoptions (e.g., via a web-based management tool). For example, the end ofpersistence might be selected from one of the following options: reboot,login, a specified time, an elapsed period of time, after X print jobs,expiration of account balance, forever, etc. The end of persistencecould be selected, for example, by an administrator of the peripheraldevice, a user of the computing device, or by default.

As can be understood, support information might be removed based on thedetection of any one of a plurality of events that might be related toan end of persistence. For example, an end of persistence might berelated to an event or events that are not related to the computingdevice and/or the user. For example, support information for a printermight be removed based on the determination that the computing devicecan no longer access the printer (e.g., when an administrator of anetwork temporarily or permanently removes a printer from a network).According to one such embodiment, a user of the computing device fromwhich the support information will be removed might be prompted toconfirm that the support information should be removed before removingthe same.

In one embodiment, the identified end of persistence is set duringinstallation of the printer onto client 12. Referring now to FIG. 3, amethod 200 of installing a peripheral device is provided that can beused with an embodiment of the present invention. For example, at act220, a representation of the physical location of the peripheral devicecan be provided. At act 240, an indication is received via therepresentation that access to the peripheral device is desired. Based onthe indication, support information associated with the peripheraldevice can be retrieved, as shown in act 260. The support informationcan be installed on the computing device, as shown in act 280.

For example, referring again to the apparatus shown in FIG. 1, printer14 or 19 could be installed onto client 12 using an installationinterface that can be accessed by multiple computing devices, even ifthose computing devices may have different environments (e.g., differenthardware components and/or operating systems). One approach to such anembodiment might include providing the installation interface in theform of a file written in a mark-up language, such as the hypertextmark-up language (“HTML”). Such a file can be stored on a server orprinter, for example, or can be stored in a data store accessible by aweb server, for example. According to one embodiment, a computing devicesuch as client 12 can run an appropriate browser application (e.g.,browser 36) that provides access to the installation interface. Forexample, one such browser might include the Internet Explorer™ browsercurrently marketed by the Microsoft Corporation of Redmond, Wash.

Referring now to FIG. 4, according to one exemplary embodiment of thepresent invention, installation interface 300 comprises a representation310 of the physical location of a printer in relation to an areaencompassing that location. For example, representation 310 mightcomprise a graphics-based representation, such as one wherein theprinter is represented by an associated icon 320 arranged on a map ofthe area in accordance with its actual physical location. In anexemplary embodiment, icon 320 might comprise a graphical representationof the printer and/or a character-based description of the printer.

According to one embodiment of the present invention, if a user ofclient 12 desires to perform some operation related to a printer (e.g.,printing to the printer), the user might indicate that desire via theclient. In an embodiment wherein the representation comprises agraphics-based representation (such as representation 310) on a displaydevice (e.g., monitor 32) associated with client 12, and the client isassociated with an input device capable of providing input informationto the client (e.g., a pointing device, such as a mouse), the user mightuse the input device to indicate the printer (e.g., by clicking on theicon of the desired printer) to which the operation is related. Forexample, a user of client 12 might desire to print using printer 14 or19. In an exemplary embodiment of the present invention, the actsnecessary to perform the desired operation are performed in response toan indication received from the user while viewing the representation.

Further according to one such exemplary embodiment, representation 310can be provided in the form of an HTML file allowing a user viewing therepresentation (e.g., via browser 36) to select a printer and, inresponse, retrieve and install (if necessary) support information (e.g.,a printer driver, font metric file, and configuration files andinformation, such as Postscript Printer Description (“PPD”) files,Generic Printer Description (“GPD”) files, and/or administrator-selectedsettings) to allow client 12 to access the printer.

For example, with reference to FIGS. 1 and 4, icon 32 can be linked toinstructions for performing the respective retrieving and installationoperation(s), such that appropriate instructions are invoked upon aselection of a printer by the user. According to one exemplaryembodiment of the present invention, the selection of icon 320 mayinvoke another HTML file specific to the selected printer (which mightbe stored on the printer, a server associated with the printer, or adata store). When accessed by browser 36, the printer-specific HTML filecauses the identified end of persistence to be set, and retrieves andinstalls the support information onto client 12.

Current conventional browsers are limited in their functionality withrespect to interactions with computing devices. Accordingly, in oneembodiment of the present invention, a supplemental component isprovided on client 12 that allows actions related to a printer to betaken on computing devices. Such a supplemental component mightcomprise, for example, ActiveX controls, Netscape plug-ins, and thelike, and will hereinafter be referred to by example as plugin 44.Plugin 44 can serve as an HTML interface to commands and functionsrelated to the printer.

For example, an indication might be provided within the printer-specificHTML file that, when acted on by browser 36, invokes plugin 44. In anexemplary embodiment, for example, the printer-specific HTML file mightinclude an embedded instruction (e.g., with Netscape, the HTML element<EMBED>; with Internet Explorer, the HTML element <OBJECT>) that, whenprocessed by browser 36, invokes plugin 44 to cause the identified endof persistence to be set. In an embodiment where end of persistence isset during installation, the embedded instruction might also be used toinvoke a plugin to cause appropriate support information to be retrievedand/or installed on client 12. In an exemplary embodiment, plugin 44 isused to set the end of persistence, and to retrieve and install thesupport information.

For example, FIG. 5 represents sample HTML code for use with theInternet Explorer browser and HTML code for use with the NetscapeNavigator browser. Both samples illustrate a way in which to interfacewith a plug-in. As illustrated, the sample Netscape HTML code passes aparameter corresponding to the end of persistence to the plugin. Forexample, in the Netscape code, this is illustrated by the command line“persistence=volatile-date-time:2001,3,22,8,30.” Accordingly, theplug-in will cause the identified printer to be installed on the clientand the printer will be removed from the client at 8:30 AM on Mar. 22,2001.

The plug-in can also be passed other parameters related to operations ofthe printer. For example, the sample code for Internet Explorer passesthe parameters operation, printer-url, and result-type to the plugin(shown in the sample code as ienipp.ocx). According to the illustratedembodiment, the operation parameter is used to tell the plug-in whichoperation (e.g., op-printer-install) to perform. The op-printer-installoperation, for example, installs the indicated printer (see below) tothe client. The printer-url parameter is used to indicate to whichprinter the operation should be directed (e.g., the Internet PrintingProtocol compliant printer associated with the uniform resource locator(“URL”) http://serverDNSname/ipp/hp4500).

The result-type parameter is used to tell the plug-in how to report theresults of the requested operation. For example, the sample code istelling the plug-in to report the results of the installation operationto the user via a message box. A further list of exemplary parameteridentifiers and supported operations that can be used to define aninterface between an HTML page and a plugin can be found in Appendix Aof the document entitled “iPrint Administration Guide”, Novell, Inc.,July 2001 (which can be accessed by the URLhttp://www.novell.com/documentation/lg/nw6p/index.html), which is herebyincorporated by reference.

Plug-in 44 can call into client 12 to perform the desired operation(e.g., setting persistence, retrieving and installing supportinformation, etc.). For example, in one exemplary embodiment, a printprovider 46 is installed on client 12 and plug-in 44 calls into theprint provider to perform the operation. According to such anembodiment, plugin 44 acts as a communication conduit from browser 36 toprint provider 46.

Print provider 46 can be used to set the end of persistence and/or toretrieve and install the printer on client 12. Among other features,print provider 46 can also be used to allow printing from applicationsrunning on client 12 and to provide a standard set of printer folderoperations (e.g., add/delete printers, set default, pause/resumeprinter, list/delete jobs, etc.). As one of the exemplary embodimentsdescribed herein has been discussed in terms of setting persistenceduring installation, installation according to an exemplary embodimentof the present invention will now be discussed.

In one embodiment, print provider 46 utilizes commands and functionscompliant with the Internet Printing Protocol (“IPP”) to communicatewith respect to a printer (e.g., with printer agent 38). For example,print provider 46 can be used to translate OS-dependent requests to IPPrequests and to send those requests to an appropriate IPP server. IPP isan application level protocol that can be used for distributed printingusing internet tools and technologies. IPP can, for example, provide auniversal way for a user to find out about the capabilities of aprinter, submit a print job to a printer, check on the status of aprinter or print job, and cancel a print job. Utilizing IPP, a printerlocated anywhere on the Internet can be made accessible to a computingdevice.

In an embodiment utilizing IPP, appropriate support is provided onclient 12 in the form of an IPP library (i.e., support is provided forthe protocol functions and commands in the environment of the client).IPP is currently built on top of the HyperText Transfer Protocol(“HTTP”). HTTP defines how messages are formatted and transmitted, andwhat actions Web servers and browsers, for example, should take inresponse to various commands. For example, IPP traffic is sent as aMultipurpose Internet Mail Extensions (MIME)-type using HTTP's featurefor posting information. Currently, IPP is transferred using theHTTP/1.1 protocol, which has the ability to perform multiple transfersover a single Transmission Control Protocol (“TCP”) connection and iscurrently the most widely accepted protocol in the Internet marketplace.Accordingly, appropriate support is also provided on client 12 in theform of an HTTP library, which can be combined with the IPP library inone embodiment (e.g., IPP/HTTP library 48).

HTTP currently runs over TCP/IP. TCP/IP is a communications protocolwherein TCP provides transport functions that ensure that the totalamount of bytes sent is correctly received. TCP enables two hosts toestablish a connection and exchange streams of data. TCP guaranteesdelivery of data and that the packets will be delivered in the sameorder in which they were sent. Meanwhile, the IP part provides routingcapabilities. Accordingly, appropriate support is also provided on theclient in the form of a TCP/IP library 50 (e.g., Winsock). Additionalsupport can also be provided to enable use of other potentiallyadvantageous protocols, such as the Secure Sockets Layer (“SSL”) andTransport Layer Security (“TLS”) security protocols.

In accordance with one exemplary embodiment, during an installationoperation, for example, print provider 46 can be adapted to query aprinter to be installed (or a server corresponding to the printer) tofilter out appropriate support information from the support informationmade available to all potential clients of the printer. For example,print provider 46 might query an IPP server 40 (e.g., via HTTP server42) associated with server 18 with an IPP request to filter outappropriate support information for client 12 from the supportinformation made available to all potential clients of printer 19. In anembodiment utilizing NDPS, IPP server 40 can receive such an IPPrequest, translate the request to NDPS and send the request to printmanager 39.

According to one embodiment of the present invention, IPP server 40enables access to all of the printers associated with print manager 39.IPP server 40 can comprise a software module running on a server (e.g.,server 18) or a printer (e.g., printer 14). For example, IPP server 40could comprise a NLM, which could be written in any one of a number ofprogramming languages, such as Visual Basic, Java, C, C++, or PERL. AnIPP server could be registered as a Common Gateway Interface (“CGI”)process, for example.

In an exemplary embodiment, print provider 46 and IPP server 40 are incompliance with the printer installation extension of IPP, which isdocumented in the Internet Engineering Task Force (IETF) Internet Draftentitled “Internet Printing Protocol (IPP): Printer InstallationExtension” (Jul. 17, 2001), and which is hereby incorporated byreference. According to one such embodiment, IPP server 40 uses theprinter description attribute “client-print-support files-supported” torepresent relevant information about all of the support files availablefor the printer it supports. Fields of this attribute could include, forexample, those identifying the URI (e.g., according to one of the ftp,http, or ipp schemes) of where to obtain the support files for eachoperating system, processor, document format, and natural language aprinter supports, the operating system types, processor types, documentformats, and natural languages supported by the set of support files,the mechanism used to compress the set of support files, the type of thesupport files (e.g., printer-driver, ppd, updf, and gpd), and the nameby which the support files will be installed on a client. Additionalfields of this attribute could also include those identifying the policyfor automatic loading, the file size, the version number, the creationdate and time, human readable text describing the set of support files,and the mechanism used to ensure the integrity and authenticity of theset of support files.

Values of an exemplary “client-print-support-files-supported” printerdescription attribute might include, for example:

uri=ipp://mycompany.com/myprinter?drv-id=ModelY.gz<

os-type=windows-95<cpu-type=x86-32<

document-format=application/postscript<

natural-language=en<compression=gzip<

file-type=printer-driver<

client-file-name=CompanyX-ModelY-driver.gz<

policy=manufacturer-recommended<

According to one such embodiment, print provider 46 could issue aGet-Printer-Attributes request to IPP server 40, wherein the“client-print-support-files-filter” operation attribute is supplied inthe request as a filter. According to such an embodiment, the filtervalue indicates in which support files print provider 46 is interested.Filter values provided by print provider 46 can include uri-scheme(e.g., ftp, http, and ipp), type of operating system, type of processor,document format, and natural language. In an exemplary embodiment, IPPserver 40 returns only the values of the“client-print-support-files-supported” printer description attributethat match the filter. An example of a“client-print-support-files-filter” filter value could be:

os-type=windows-95<cpu-type=x86-32<

document-format=application-postscript<natural-language=en,de<

A matching response might be the following string values:

uri=ipp://mycompany.com/myprinter?drv-id=ModelY.gz<

os-type=windows-95<cpu-type=x86-32<

document-format=application/postscript<

natural-language=en<compression=gzip<

file-type=printer-driver<

client-file-name=CompanyX-ModelY-driver.gz<

policy=manufacturer-recommended<

digital-signature=smime<

uri=ftp://mycompany.com/root/drivers/win95/CompanyX/ModelY.gz<

os-type=windows-95<cpu-type=x86-32<

document-format=application/postscript,application/vnd.hp-PCL<

natural-language=en,fr<compression=gzip<

file-type=printer-driver<

client-file-name=CompanyX-ModelY-driver.gz<

policy=manufacturer-recommended<

digital-signature=smime<

If the above request had also contained the “uri-scheme” field in thefilter, such as uri-scheme=ipp<, then only the first value would havebeen returned.

Accordingly, print provider 46 can receive a list of the potentialsupport files that meet the requirements of client 12. Print provider 46can then choose from the returned list which of the support files to useand know where to get them. For example, IPP server 40 might be queriedto identify the support information that corresponds to the environmentof client 12 (e.g., operating system, processor, preferred naturallanguage, and preferred document format, for example, a page descriptionlanguage (PDL) such as Postscript of PCL).

If one of the URIs returned is, for example, an IPP URI, print provider46 can retrieve the support files from the corresponding IPP resourcevia, for example, a Get-Client-Print-Support-Files operation. Accordingto such an embodiment, IPP server 40 returns a“client-print-support-files-supported” attribute that identifies theproperties of the returned support files and the support files thatmatch the request. Moreover, print provider 46 might also retrieve thesupport files through other means, such as by using an FTP Get of HTTPGet operation.

Although the support information can be stored on a printer and/or aserver associated with a printer, such information might also be storedand downloaded from repositories of different sorts, such as data store16. In an exemplary embodiment, the support information is stored in acentral repository for network resources, such as the ResourceManagement System available from Novell, from which print manager 39 canobtain the support information. Data store 16 may also be configured asa database for storing information relating to, e.g., objects thatrepresent components of a printing architecture that may beadvantageously used with the present invention.

According to one embodiment of the present invention, the supportinformation for a particular client is compressed into a single file.For example, the support information can be stored in a zip format. In afurther exemplary embodiment, when the support information is compressedinto a single file, the file is time-stamped (e.g., with the date andtime of the creation of the single file). In still a further embodimentof the present invention, the support information is stored with anin-memory index, which can speed download times.

In such an embodiment, print provider 46 could compare the time-stamp ofthe support information with a time-stamp associated with supportinformation already installed on client 12 (e.g., such a time-stampcould be stored on a database of configuration information associatedwith the client) before downloading the support information. Forexample, if the time-stamp of the existing support information is laterthan the time-stamp of the newly identified support information, thenthe downloading of the newly identified support information can beavoided.

In a further embodiment, upon receiving an indication that access to aperipheral device is desired, a determination is made as to whether anycomponents (e.g., print provider 46 and/or plug-in 44) are needed onclient 12. If needed, the components can, for example, be pushed toclient 12 via a compressed file that automatically decompresses andinstalls itself.

In one embodiment, after support information is downloaded, printprovider 46 can read any information files, add the support information(e.g., a printer driver) to client 12, add the printer to the client(e.g., by installing the printer in the Windows printer file), andfinalize any printer driver settings. With respect to the end ofpersistence, print provider 46 can, for example, write a setting to adatabase of configuration settings 52 associated with the client (e.g.,the local machine of the Windows Registry database). For example, in anembodiment where client 12 is running a Windows operation system, if theend of persistence has been set to a particular time and date, that timeand date can be written to the Registry database. Print provider 46 canmonitor for an event corresponding to the identified end of persistence,and remove the printer and associated support information 54 from theclient when that event is triggered.

For example, print provider 46 can cause an event monitoring thread 56to be run on client 12. According to an exemplary embodiment, thread 56is run in the background. Event monitoring thread 56 can be started eachtime client 12 is rebooted. In an exemplary embodiment, event monitoringthread 56 is started when a spooler mode or printer spooler loads onclient 12.

In an embodiment wherein client 12 utilizes a Windows operating system,event monitoring thread 56 can, for example, monitor the Registrydatabase to see if the event related to the identified end ofpersistence has come to pass. In one embodiment, event monitoring thread56 always monitors, for example, the Registry database. In anotherembodiment, event monitoring thread 56 periodically monitors, forexample, the Registry database (e.g., once every 15 seconds, once everyhour, etc.). When the event comes to pass or is triggered, eventmonitoring thread 56 removes the printer and its associated supportinformation from client 12.

For example, in an embodiment wherein the end of persistence has beenset as a specific date and time, the date and time can be stored inconfiguration settings database 52. Event monitoring thread 56 monitorscurrent time versus the time written to database 52. When the currenttime becomes equal to the time written in database 52, thread 56 removesthe printer and its associated support information.

A further example is now given wherein the end of persistence has beenset to reboot. According to such an embodiment, thread 56 checks to seeif client 12 has been rebooted since the printer and its associatedsupport information was installed. If so, thread 56 removes the printerand its associated support information.

Among other advantages, embodiments of the present invention can allowmobile employees, business partners, and customers, for example, toaccess a peripheral device from a variety of locations (including remotelocations), such as by using an Internet connection. Moreover, suchaccess can be provided without having to involve an administrator, forexample, on configuration issues. Furthermore, according to an exemplaryembodiment of the present invention, support information installed on acomputing device to enable such access can be scheduled for automaticremoval.

The specific illustrations and embodiments described herein areexemplary only in nature and are not intended to be limiting of theinvention defined by the claims. The illustrations and embodiments arenot intended to be exhaustive nor to limit the invention to the preciseform disclosed. Many alternatives, modifications, and variations will beapparent to those skilled in the art in light of the above teaching.Accordingly, the present invention is intended to embrace allalternatives, modifications, and variations that fall within the spiritand broad scope of the attached.

1. A method for maintaining a computing device connected or not to aperipheral device, comprising: installing the peripheral device on thecomputing device; receiving an indication of an end of persistence forthe peripheral device regardless of whether the peripheral device isconnected to the computing device; by the computing device, monitoringfor an event related to the end of persistence; by the computing device,fully automatically removing support information associated with theperipheral device based on detection of the event related to the end ofpersistence, wherein the monitoring and the fully automatically removingsupport information occurs regardless of whether the computing device isnetworked or maintains a network connection, wherein the installing theperipheral device includes providing a representation of a physicallocation of the peripheral device in relation to an area encompassingthe physical location of the peripheral device; receiving an indicationvia the representation that access to the peripheral device is desired;retrieving support information associated with the peripheral device;and installing the retrieved support information on the computingdevice, wherein the removing support information comprises removing thesupport information retrieved and installed on the computing device. 2.The method for maintaining a computing device according to claim 1,further comprising the act of storing an indicator of the end ofpersistence.
 3. The method for maintaining a computing device accordingto claim 2, wherein the act of storing an indicator comprises storingthe indicator in a database of configuration settings associated withthe computing device.
 4. The method for maintaining a computing deviceaccording to claim 3, wherein the act of monitoring for an eventcomprises monitoring the database of configuration settings associatedwith the computing device.
 5. The method for maintaining a computingdevice according to claim 1, wherein the act of monitoring for an eventcomprises running an event monitoring thread.
 6. The method formaintaining a computing device according to claim 5, further comprisingbooting the computing device and starting the event monitoring threadafter booting the computing device.
 7. The method for maintaining acomputing device according to claim 1, wherein the providing therepresentation comprises accessing the representation via a browserapplication on the computing device.
 8. The method for maintaining acomputing device according to claim 1, wherein the peripheral devicecomprises a printing device and the retrieving support informationcomprises downloading the support information via a second computingdevice using requests in compliance with the Internet Printing Protocol.9. The method for maintaining a computing device according to claim 8,wherein the second computing device comprises the printing device. 10.The method for maintaining a computing device according to claim 1,wherein the retrieving support information comprises querying a secondcomputing device having access to a plurality of support informationassociated with the peripheral device to determine which of theplurality of support information is appropriate for the computingdevice.
 11. The method for maintaining a computing device according toclaim 10, wherein the computing device has an environment and the act ofquerying comprises the act of providing the second computing device anindication of the environment of the computing device, furthercomprising the act of receiving support information appropriate for theenvironment of the computing device.
 12. A method for maintaining acomputing device according to claim 10, further comprising the acts of:receiving an indication of temporal status of at least one file in thesupport information determined to be appropriate for the computingdevice; comparing the temporal status of the at least one file in thesupport information determined to be appropriate for the computingdevice with a temporal status of any corresponding one of the at leastone file already installed on the computing device; and retrieving theat least one file in the support information determined to beappropriate if its temporal status is more recent than that of acorresponding one of the at least one files installed on the computingdevice.
 13. The method for maintaining a computing device according toclaim 1, wherein the retrieving support information comprises: receivingan indication of a location of support information appropriate for thecomputing device; and retrieving the appropriate support informationfrom the location.
 14. A method for maintaining a computing deviceaccording to claim 13, wherein the act of retrieving the appropriatesupport information from the location comprises using one of a FileTransfer Protocol Get operation, a Hypertext Transfer Protocol Getoperation, and a Internet Protocol Get-Client-Print-Support-Filesoperation to download the appropriate support information from thelocation.
 15. A method for maintaining a computing device connected ornot to a peripheral device, comprising: installing the peripheral deviceon the computing device by selection of a peripheral device iconprovided in a representation of a physical location of the peripheraldevice in relation to an area encompassing the physical location of theperipheral device; setting an end of persistence of the peripheraldevice during the installing the peripheral device; receiving anindication of the end of persistence for the peripheral deviceregardless of whether the peripheral device is connected to thecomputing device; monitoring for an event related to the end ofpersistence; detecting the event; and by the computing device, fullyautomatically removing support information associated with theperipheral device based on the detecting.
 16. The method of claim 15,wherein the monitoring for the event related to the end of persistencefurther includes assessing whether a volatile date and time has beenreached.
 17. A method for maintaining a computing device connected ornot to a peripheral device, comprising: installing the peripheral deviceon the computing device by selection of a peripheral device iconprovided in a representation of a physical location of the peripheraldevice in relation to an area encompassing the physical location of theperipheral device; receiving an indication of an end of persistence forthe peripheral device regardless of whether the peripheral device isconnected to the computing device; monitoring for an event related tothe end of persistence; detecting the event; and by the computingdevice, fully automatically removing support information associated withthe peripheral device based on the detecting.